The vision of a smart, connected home has been around for over a decade. In this vision, users easily perform tasks involving diverse sets of devices connected to their home network without the need for painstaking configuration and custom programming. For example, a home with remotely controllable lights, cameras, windows, and door locks is envisioned. It should be easy to set up this home to automatically adjust windows and lights based on the outside temperature and lighting or to remotely determine a visitor at the front door and potentially open the door. While modern homes have many of these technological home devices, applications which coordinate such devices to accomplish cross-device tasks have yet to appear in any significant numbers.
Homes differ in terms of not only their devices and interconnectivity, but also user preferences for how various activities should be conducted. Application developers for home devices such as lighting systems, security systems, and audio visual systems are thus not only plagued by having to support many distinct devices, but also to build a configuration flexible enough to meet the demands of a majority of users. Thus, it should come as no surprise that there are few applications for the home today, save those provided by the vendors of specific devices. But vendor applications seldom provide cross-device capabilities and typically only provide access to a single device. For instance, electronic locks come with custom software. Such vertical integration by individual vendors can provide a more reliable experience to users but discourages the integration of multiple devices to perform various functions.
Current approaches for enabling cross-device tasks fall on the two ends of a spectrum. At one end are the efforts to improve basic device interoperability through standards and research efforts. However, device interoperability alone is insufficient. Applications also need to support user preferences and coordinate device access. For instance, a security task may want to keep the windows closed at the same time as an energy conservation task wants to open them. Interoperability itself does not provide mechanisms to resolve such conflicts. At the other end of the spectrum are monolithic systems that tightly integrate multiple devices for specific cross-device tasks. They include commercial security systems and research efforts. However, such systems are hard to extend (especially for users) with new devices or tasks.